Windows环境下grub安装 |
您所在的位置:网站首页 › grub2 启动光盘命令 › Windows环境下grub安装 |
grub广泛用于多系统、U盘引导,这里我们探讨windows环境下grub的安装与使用。 **如果还有人在用xp系统,在启动项添加grub4dos十分方便,不必如此文这般麻烦** 前言:------------------------------------------------------------可略过------------------------------------------------ 首先提一下硬盘的分区格式与与其对应的引导方式: 传统MBR分区特点: 1.最大支持2TB硬盘 2.最大支持4个分区(linux下识别为sdx1~4) 3.使用扩展分区再分逻辑分区可以突破4个分区的限制,即可以分配3个主分区和一个扩展分区,扩展分区再分配多个逻辑分区(在linux下第一个逻辑分区为sdx5) 针对MBR分区的缺点,更新一代的GPT分区有如下特点: 1.支持大容量硬盘以及更多的分区 2.相应的对较早时间的操作系统支持并不是很友好 我们作为使用者简单的看引导问题,最直观的表现进bios看主板是否支持UEFI启动,启动情况通常又分以下两种情况:(深了不敢说,要脸(/▽\)) 1.较旧型号的主板不支持UEFI启动以及主板开启legacy启动选项(多数主板的名称)的,我们可以采用bios+MBR硬盘进行系统引导 2.使用”UEFI ONLY“或者“混合”启动的,我们可以使用UEFI+GPT硬盘进行系统引导 如何鉴别我们的系统硬盘采用何种分区方式,我们以系统自带的工具为例: 1.在windows系统下打开”磁盘管理“,打开方式:(win7及以后,点击左下角windows图标)/windows键+r 输入“diskmgmt.msc";“我的电脑/计算机/此电脑”右键“管理”->左侧找到“存储”下的“磁盘管理”鼠标左键单击。 2.系统所在硬盘(如:磁盘 0)右键->属性->卷->硬盘分区形式 ,GUID分区表(GPT) 或 主启动记录(MBR) 另:在”磁盘管理“中可见系统所在硬盘如果存在“EFI系统分区”则直接可以确定使用GPT分区 当然也可使用第三方工具如aida64/everest、diskgenius等 -------------------------------------------------------------------------------------------------------------------------- 确定了系统启动方式,我们可选择用何种方式安装grub;对于存在多硬盘的计算机而言我们也可以将grub安装到其他硬盘然后通过切换启动磁盘顺序达到grub引导的目的。 以下内容我们以主硬盘安装分两种情况说明: 一、使用windows的引导项添加grub4dos启动 准备工具:grub4dos 特点:不破坏windows默认引导程序,方便后期删改;缺点是需要等待windows引导过程耗时长 步骤(以安装到c盘为例): 1.使用管理员账号启动命令行提示符(开始 -> 输入cmd->右键“以管理员身份运行”,其他方法也多次用到) 2.运行如下命令: bcdedit /create /d "Grub For DOS" /application bootsector 后会出现标识符如 {90e14995-d284-11de-a325-a4ab4deca1b7} bcdedit /set {标识符} device partition=C: bcdedit /set {标识符} path \grldr.mbr bcdedit /displayorder {标识符} /addlast 3.复制grub4dos中grldr及grldr.mbr至C盘根目录 4.使用记事本创建menu.lst文件(注意保存类型选择所有文件而不是默认的文本文件,否则扩展名自动添加txt) 示例(内容不包括前后`): ``` timeout 5 default 0 title MyRetroarch-0.1 root=(hd0,1) kernel /myretro/boot/vmlinuz initrd /myretro/boot/initrfs.img ``` :上面所述(hd0,1)表示计算机的第一块磁盘的第二个分区!! 二、安装grub2 工具:从grub官网http://ftp.gnu.org/gnu/grub/下载最新版grub-2.xx-for-windows.zip 特点:引导迅速,配置灵活,比较上面一种情况不依赖于windows系统 作为一个实用主义者,这里只讨论最基本的可用性的问题,美化等方面不会涉及。 针对两种分区类型分别说明 I、mbr分区 **以下安装过程会覆盖掉原有的引导信息,故而安装完成重启系统后会直接使用新安装的grub2进行系统引导,故而其配置需要谨慎,防止不能正常进入系统。** win7之后的系统在全新安装后默认会分配一个叫做“系统保留”的分区作为引导分区,我们将grub2也安装至此分区。 ***特别提醒有一些计算机从低版本系统升级过来没有该分区,可忽略掉下面分配盘符的步骤。 准备工作:为“系统保留”分区分配盘符(“磁盘管理”->“系统保留”分区上右键->“更改驱动器号和路径”->添加),之后我d盘为例(注意其中文件为隐藏的系统文件,如需查看其中文件内容需要“显示隐藏文件“和去掉勾选“隐藏受保护的操作系统文件”) 步骤: 1.解压缩grub-2.xx-for-windows.zip到c盘根目录 2.以管理员权限打开命令提示符 3.输入如下命令列出本地磁盘信息 wmic diskdrive list brief 可见我们要安装的目标通常为本地第一块磁盘即为\\.\PHYSICALDRIVE0这条;以此方法安装u盘启动引导则需要注意在后续安装过程中会用到,如我的移动磁盘为\\.\PHYSICALDRIVE2。 4.输入如下三条命令 cd \ cd grub2-2.xx-for-windows //注意此处2.xx替换成grub版本号,可以用tab键直接补全 grub-install.exe --boot-directory=d: \\.\PHYSICALDRIVE0 说明一下:这里隐含了一条默认参数--target=i386-pc;“--boot-directory=d:”这里的d为刚才我分配的“系统保留”分区的盘符,注意按照实际情况修改;另外可以选择性添加--modules=""参数用来指定需要安装的模块,如--modules="ntfs ext2 part_msdos cpio"等等,非专业用户推荐使用默认的全部安装。 5.打开“系统保留”分区下的grub文件夹,在其中创建一个名为grub.cfg的文本文件配置系统启动文件(使用notepad注意扩展名问题) 示例(已验证下面的win7条目与win10完全通用,注意不含`): ``` set timeout=5 set default=0 insmod part_msdos insmod ntfs insmod all_video menuentry "Windows 7" { search --file --set=root --no-floppy /Boot/zh-CN/bootmgr.exe.mui chainloader +1 } menuentry "MyRetroarch-0.1" { search --file --set=root --no-floppy /myretro/boot/vmlinuz linux /myretro/boot/vmlinuz initrd /myretro/boot/initrfs.img } ``` 6.重启测试是否正常引导,如因grub.cfg输入有误造成的不能引导可尝试手动输入命令引导系统。 set root=(hd0,msdos1) //设置第一块硬盘的mbr第一个分区(“系统保留”分区,grub2的第一个分区编号为1)为当前分区,与上面的search语句同样意思 chainloader +1 boot 收尾工作:删除“系统保留”分区的盘符(“磁盘管理”->“系统保留”分区上右键->“更改驱动器号和路径”->点击之前选择分配的盘符,按删除->是->是);删除解压缩的grub-2.xx-for-windows文件夹。 II. gpt分区 通常采用gpt分区安装系统默认会分一个efi分区用于安装启动文件,本质上是一个fat32格式分区。我们通过“磁盘管理”不能对其分配盘符,我们可以使用系统自带的diskpart工具对其操作,或者可以借助第三方工具。(第三方工具diskgenius操作:找到esp分区,右键->指派新的驱动器号(盘符);选择相应的盘符,确定) 使用diskpart为EFI分区分配盘符: 以管理员身份运行命令提示符,命令如下 a. 分配盘符 diskpart list disk //查看当前磁盘信息 select disk 0 //使用第一块磁盘 list part //查看当前磁盘的分区信息 EFI分区通常位于第二分区,其类型为“系统” select part 2 assign letter=f //此处我为其分配f盘 exit //退出 b. 取消分配盘符 diskpart select disk 0 select part 2 remove letter=f exit 下面以我的EFI分区为F盘为例,首先确保已经为EFI分区分配盘符,然后进行的grub的安装步骤: 1.解压缩grub-2.xx-for-windows.zip到c盘根目录 2.以管理员权限打开命令提示符 3.输入如下命令列出本地磁盘信息 wmic diskdrive list brief 查看输出确定安装磁盘 4.输入如下三条命令 cd \ cd grub2-2.xx-for-windows //注意此处2.xx替换成grub版本号 grub-install.exe --target=x86_64-efi --efi-directory=f: --boot-directory=f:/EFI \\.\PHYSICALDRIVE0 //注意此处的f替换成相应的efi分区盘符 执行完这三条命令后会在f盘的EFI文件夹下生成grub文件夹 5.同上述mbr安装过程一样,在grub文件夹根目录下创建grub.cfg文件。 一般用户会存在打开分区有权限要求的问题(好像只有administrator账户不会有此提示),百度一圈大部分都不是真正解决问题的方法,我的理解是不用去找安全选项卡,因为efi分区本质上是fat32格式,而fat32分区不支持安全选项,这里我分享的方法是使用命令行:(使用diskgenius操作更简单,随便找个地方创建文件,塞到相应目录) 1). 首先用管理员权限打开命令提示符,确保已经给EFI分区分配盘符(以下以F盘为例) 2). 输入命令: f: cd EFI\grub notepad grub.cfg //这里如果grub.cfg文件存在则直接打开,如不存在会有提示是否创建 输入内容后默认路径正常保存退出即可 grub.cfg示例(已验证下面的win7条目与win10完全通用,注意不含`): ``` set timeout=5 set default=0 insmod part_gpt insmod ntfs insmod all_video menuentry 'Windows 10' { search --file --no-floppy --set=root /EFI/Microsoft/Boot/bootmgfw.efi chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi } menuentry "MyRetroarch-0.1" { search --file --set=root --no-floppy /myretro/boot/vmlinuz linux /myretro/boot/vmlinuz initrd /myretro/boot/initrfs.img } ``` 6.重启,进入bios,更改启动项顺序将grub置顶,启动验证是否正常运行 收尾工作就是在正常引导windows后删除ESP分区的盘符,使用第三方工具也是如此。 BTW: 如果使用grub2做efi启动U盘,grub-install的参数需要加上--removable,此参数仅支持efi格式的安装!! -------------------------------------------------------------------------------------------------------------------------- 以上就是我对windows环境下安装与使用grub的心得体会,全部实际验证过,安装过程中碰到的一些小问题也分享了我的解决办法,欢迎一起探讨! |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |